home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Beta / Quicktime 2.0 Beta.iso / Programming Stuff / Interfaces / QuickTime Interfaces / ImageCompression.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-05-02  |  32.6 KB  |  891 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        ImageCompression.h
  3.  
  4.     Copyright:    © 1984-1993 by Apple Computer, Inc., all rights reserved.
  5.  
  6.     WARNING
  7.     This file was auto generated by the interfacer tool. Modifications
  8.     must be made to the master file.
  9.  
  10. */
  11.  
  12. #ifndef __IMAGECOMPRESSION__
  13. #define __IMAGECOMPRESSION__
  14.  
  15. #ifndef __QUICKDRAW__
  16. #include <Quickdraw.h>
  17. /*    #include <Types.h>                                            */
  18. /*        #include <ConditionalMacros.h>                            */
  19. /*        #include <MixedMode.h>                                    */
  20. /*            #include <Traps.h>                                    */
  21. /*    #include <QuickdrawText.h>                                    */
  22. /*        #include <IntlResources.h>                                */
  23. #endif
  24.  
  25. #ifndef __QDOFFSCREEN__
  26. #include <QDOffscreen.h>
  27. #endif
  28.  
  29. #ifndef __TYPES__
  30. #endif
  31.  
  32. #ifndef __COMPONENTS__
  33. #include <Components.h>
  34. #endif
  35.  
  36. #ifndef __STANDARDFILE__
  37. #include <StandardFile.h>
  38. /*    #include <Dialogs.h>                                        */
  39. /*        #include <Windows.h>                                    */
  40. /*            #include <Events.h>                                    */
  41. /*                #include <OSUtils.h>                            */
  42. /*            #include <Controls.h>                                */
  43. /*                #include <Menus.h>                                */
  44. /*        #include <TextEdit.h>                                    */
  45. /*    #include <Files.h>                                            */
  46. /*        #include <SegLoad.h>                                    */
  47. #endif
  48.  
  49. #ifndef __TOOLUTILS__
  50. #include <ToolUtils.h>
  51. /*    #include <TextUtils.h>                                        */
  52. /*        #include <Script.h>                                        */
  53. /*    #include <FixMath.h>                                        */
  54. #endif
  55.  
  56. #if defined(powerc) || defined (__powerc)
  57. #pragma options align=mac68k
  58. #endif
  59. struct MatrixRecord {
  60.     Fixed                        matrix[3][3];
  61. };
  62. #if defined(powerc) || defined(__powerc)
  63. #pragma options align=reset
  64. #endif
  65.  
  66. typedef struct MatrixRecord MatrixRecord;
  67.  
  68. typedef MatrixRecord *MatrixRecordPtr;
  69.  
  70. #if defined(powerc) || defined (__powerc)
  71. #pragma options align=mac68k
  72. #endif
  73. struct FixedPoint {
  74.     Fixed                        x;
  75.     Fixed                        y;
  76. };
  77. #if defined(powerc) || defined(__powerc)
  78. #pragma options align=reset
  79. #endif
  80.  
  81. typedef struct FixedPoint FixedPoint;
  82.  
  83. #if defined(powerc) || defined (__powerc)
  84. #pragma options align=mac68k
  85. #endif
  86. struct FixedRect {
  87.     Fixed                        left;
  88.     Fixed                        top;
  89.     Fixed                        right;
  90.     Fixed                        bottom;
  91. };
  92. #if defined(powerc) || defined(__powerc)
  93. #pragma options align=reset
  94. #endif
  95.  
  96. typedef struct FixedRect FixedRect;
  97.  
  98. #define codecInfoDoes1 (1L<<0)
  99.  
  100. #define codecInfoDoes2 (1L<<1)
  101.  
  102. #define codecInfoDoes4 (1L<<2)
  103.  
  104. #define codecInfoDoes8 (1L<<3)
  105.  
  106. #define codecInfoDoes16 (1L<<4)
  107.  
  108. #define codecInfoDoes32 (1L<<5)
  109.  
  110. #define codecInfoDoesDither (1L<<6)
  111.  
  112. #define codecInfoDoesStretch (1L<<7)
  113.  
  114. #define codecInfoDoesShrink (1L<<8)
  115.  
  116. #define codecInfoDoesMask (1L<<9)
  117.  
  118. #define codecInfoDoesTemporal (1L<<10)
  119.  
  120. #define codecInfoDoesDouble (1L<<11)
  121.  
  122. #define codecInfoDoesQuad (1L<<12)
  123.  
  124. #define codecInfoDoesHalf (1L<<13)
  125.  
  126. #define codecInfoDoesQuarter (1L<<14)
  127.  
  128. #define codecInfoDoesRotate (1L<<15)
  129.  
  130. #define codecInfoDoesHorizFlip (1L<<16)
  131.  
  132. #define codecInfoDoesVertFlip (1L<<17)
  133.  
  134. #define codecInfoDoesSkew (1L<<18)
  135.  
  136. #define codecInfoDoesBlend (1L<<19)
  137.  
  138. #define codecInfoDoesWarp (1L<<20)
  139.  
  140. #define codecInfoDoesRecompress (1L<<21)
  141.  
  142. #define codecInfoDoesSpool (1L<<22)
  143.  
  144. #define codecInfoDoesRateConstrain (1L<<23)
  145.  
  146. #define codecInfoDepth1 (1L<<0)
  147.  
  148. #define codecInfoDepth2 (1L<<1)
  149.  
  150. #define codecInfoDepth4 (1L<<2)
  151.  
  152. #define codecInfoDepth8 (1L<<3)
  153.  
  154. #define codecInfoDepth16 (1L<<4)
  155.  
  156. #define codecInfoDepth32 (1L<<5)
  157.  
  158. #define codecInfoDepth24 (1L<<6)
  159.  
  160. #define codecInfoDepth33 (1L<<7)
  161.  
  162. #define codecInfoDepth34 (1L<<8)
  163.  
  164. #define codecInfoDepth36 (1L<<9)
  165.  
  166. #define codecInfoDepth40 (1L<<10)
  167.  
  168. #define codecInfoStoresClut (1L<<11)
  169.  
  170. #define codecInfoDoesLossless (1L<<12)
  171.  
  172. #define codecInfoSequenceSensitive (1L<<13)
  173.  
  174. #define codecFlagUseImageBuffer (1L<<0)
  175.  
  176. #define codecFlagUseScreenBuffer (1L<<1)
  177.  
  178. #define codecFlagUpdatePrevious (1L<<2)
  179.  
  180. #define codecFlagNoScreenUpdate (1L<<3)
  181.  
  182. #define codecFlagWasCompressed (1L<<4)
  183.  
  184. #define codecFlagDontOffscreen (1L<<5)
  185.  
  186. #define codecFlagUpdatePreviousComp (1L<<6)
  187.  
  188. #define codecFlagForceKeyFrame (1L<<7)
  189.  
  190. #define codecFlagOnlyScreenUpdate (1L<<8)
  191.  
  192. #define codecFlagLiveGrab (1L<<9)
  193.  
  194. #define codecFlagDontUseNewImageBuffer (1L<<10)
  195.  
  196. #define codecFlagInterlaceUpdate (1L<<11)
  197.  
  198. #define codeFlagCatchUpDiff (1L<<12)
  199.  
  200. #define codecFlagUsedNewImageBuffer (1L<<14)
  201.  
  202. #define codecFlagUsedImageBuffer (1L<<15)
  203.  
  204. #define codecCantWhenErr -8974
  205.  
  206. #define codecCantQueueErr -8975
  207.  
  208. #define codecMinimumDataSize 32768
  209.  
  210. #define compressorComponentType 'imco'
  211.  
  212. #define decompressorComponentType 'imdc'
  213.  
  214. typedef Component CompressorComponent;
  215.  
  216. typedef Component DecompressorComponent;
  217.  
  218. typedef Component CodecComponent;
  219.  
  220. #define anyCodec ((CodecComponent)0)
  221.  
  222. #define bestSpeedCodec ((CodecComponent)-1)
  223.  
  224. #define bestFidelityCodec ((CodecComponent)-2)
  225.  
  226. #define bestCompressionCodec ((CodecComponent)-3)
  227.  
  228. typedef long CodecType;
  229.  
  230. typedef unsigned short CodecFlags;
  231.  
  232. typedef unsigned long CodecQ;
  233.  
  234. #define codecLosslessQuality 0x400L
  235.  
  236. #define codecMaxQuality 0x3ffL
  237.  
  238. #define codecMinQuality 0x000L
  239.  
  240. #define codecLowQuality 0x100L
  241.  
  242. #define codecNormalQuality 0x200L
  243.  
  244. #define codecHighQuality 0x300L
  245.  
  246. typedef pascal OSErr (*ICMDataProcPtr)(Ptr *dataP, long bytesNeeded, long refcon);
  247.  
  248. enum {
  249.     uppICMDataProcInfo = kPascalStackBased
  250.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  251.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr*)))
  252.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  253.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  254. };
  255.  
  256. #if USESROUTINEDESCRIPTORS
  257. typedef UniversalProcPtr ICMDataUPP;
  258.  
  259. #define CallICMDataProc(userRoutine, dataP, bytesNeeded, refcon)        \
  260.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMDataProcInfo, (dataP), (bytesNeeded), (refcon))
  261. #define NewICMDataProc(userRoutine)        \
  262.         (ICMDataUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMDataProcInfo, GetCurrentISA())
  263. #else
  264. typedef ICMDataProcPtr ICMDataUPP;
  265.  
  266. #define CallICMDataProc(userRoutine, dataP, bytesNeeded, refcon)        \
  267.         (*(userRoutine))((dataP), (bytesNeeded), (refcon))
  268. #define NewICMDataProc(userRoutine)        \
  269.         (ICMDataUPP)(userRoutine)
  270. #endif
  271.  
  272. typedef pascal OSErr (*ICMFlushProcPtr)(Ptr data, long bytesAdded, long refcon);
  273.  
  274. enum {
  275.     uppICMFlushProcInfo = kPascalStackBased
  276.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  277.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr)))
  278.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  279.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  280. };
  281.  
  282. #if USESROUTINEDESCRIPTORS
  283. typedef UniversalProcPtr ICMFlushUPP;
  284.  
  285. #define CallICMFlushProc(userRoutine, data, bytesAdded, refcon)        \
  286.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMFlushProcInfo, (data), (bytesAdded), (refcon))
  287. #define NewICMFlushProc(userRoutine)        \
  288.         (ICMFlushUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMFlushProcInfo, GetCurrentISA())
  289. #else
  290. typedef ICMFlushProcPtr ICMFlushUPP;
  291.  
  292. #define CallICMFlushProc(userRoutine, data, bytesAdded, refcon)        \
  293.         (*(userRoutine))((data), (bytesAdded), (refcon))
  294. #define NewICMFlushProc(userRoutine)        \
  295.         (ICMFlushUPP)(userRoutine)
  296. #endif
  297.  
  298. typedef pascal void (*ICMCompletionProcPtr)(OSErr result, short flags, long refcon);
  299.  
  300. enum {
  301.     uppICMCompletionProcInfo = kPascalStackBased
  302.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(OSErr)))
  303.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(short)))
  304.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  305. };
  306.  
  307. #if USESROUTINEDESCRIPTORS
  308. typedef UniversalProcPtr ICMCompletionUPP;
  309.  
  310. #define CallICMCompletionProc(userRoutine, result, flags, refcon)        \
  311.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMCompletionProcInfo, (result), (flags), (refcon))
  312. #define NewICMCompletionProc(userRoutine)        \
  313.         (ICMCompletionUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMCompletionProcInfo, GetCurrentISA())
  314. #else
  315. typedef ICMCompletionProcPtr ICMCompletionUPP;
  316.  
  317. #define CallICMCompletionProc(userRoutine, result, flags, refcon)        \
  318.         (*(userRoutine))((result), (flags), (refcon))
  319. #define NewICMCompletionProc(userRoutine)        \
  320.         (ICMCompletionUPP)(userRoutine)
  321. #endif
  322.  
  323. #define codecCompletionSource (1<<0)
  324.  
  325. #define codecCompletionDest (1<<1)
  326.  
  327. typedef pascal OSErr (*ICMProgressProcPtr)(short message, Fixed completeness, long refcon);
  328.  
  329. enum {
  330.     uppICMProgressProcInfo = kPascalStackBased
  331.          | RESULT_SIZE(SIZE_CODE(sizeof(OSErr)))
  332.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(short)))
  333.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Fixed)))
  334.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long)))
  335. };
  336.  
  337. #if USESROUTINEDESCRIPTORS
  338. typedef UniversalProcPtr ICMProgressUPP;
  339.  
  340. #define CallICMProgressProc(userRoutine, message, completeness, refcon)        \
  341.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMProgressProcInfo, (message), (completeness), (refcon))
  342. #define NewICMProgressProc(userRoutine)        \
  343.         (ICMProgressUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMProgressProcInfo, GetCurrentISA())
  344. #else
  345. typedef ICMProgressProcPtr ICMProgressUPP;
  346.  
  347. #define CallICMProgressProc(userRoutine, message, completeness, refcon)        \
  348.         (*(userRoutine))((message), (completeness), (refcon))
  349. #define NewICMProgressProc(userRoutine)        \
  350.         (ICMProgressUPP)(userRoutine)
  351. #endif
  352.  
  353. #define codecProgressOpen 0
  354.  
  355. #define codecProgressUpdatePercent 1
  356.  
  357. #define codecProgressClose 2
  358.  
  359. typedef pascal void (*StdPixProcPtr)(PixMap *src, Rect *srcRect, MatrixRecord *matrix, short mode, RgnHandle mask, PixMap *matte, Rect *matteRect, short flags);
  360.  
  361. enum {
  362.     uppStdPixProcInfo = kPascalStackBased
  363.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(PixMap*)))
  364.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*)))
  365.          | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(MatrixRecord*)))
  366.          | STACK_ROUTINE_PARAMETER(4, SIZE_CODE(sizeof(short)))
  367.          | STACK_ROUTINE_PARAMETER(5, SIZE_CODE(sizeof(RgnHandle)))
  368.          | STACK_ROUTINE_PARAMETER(6, SIZE_CODE(sizeof(PixMap*)))
  369.          | STACK_ROUTINE_PARAMETER(7, SIZE_CODE(sizeof(Rect*)))
  370.          | STACK_ROUTINE_PARAMETER(8, SIZE_CODE(sizeof(short)))
  371. };
  372.  
  373. #if USESROUTINEDESCRIPTORS
  374. typedef UniversalProcPtr StdPixUPP;
  375.  
  376. #define CallStdPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags)        \
  377.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppStdPixProcInfo, (src), (srcRect), (matrix), (mode), (mask), (matte), (matteRect), (flags))
  378. #define NewStdPixProc(userRoutine)        \
  379.         (StdPixUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppStdPixProcInfo, GetCurrentISA())
  380. #else
  381. typedef StdPixProcPtr StdPixUPP;
  382.  
  383. #define CallStdPixProc(userRoutine, src, srcRect, matrix, mode, mask, matte, matteRect, flags)        \
  384.         (*(userRoutine))((src), (srcRect), (matrix), (mode), (mask), (matte), (matteRect), (flags))
  385. #define NewStdPixProc(userRoutine)        \
  386.         (StdPixUPP)(userRoutine)
  387. #endif
  388.  
  389. typedef long ImageSequence;
  390.  
  391. #if defined(powerc) || defined (__powerc)
  392. #pragma options align=mac68k
  393. #endif
  394. struct ICMProgressProcRecord {
  395.     ICMProgressUPP                progressProc;
  396.     long                        progressRefCon;
  397. };
  398. #if defined(powerc) || defined(__powerc)
  399. #pragma options align=reset
  400. #endif
  401.  
  402. typedef struct ICMProgressProcRecord ICMProgressProcRecord;
  403.  
  404. typedef ICMProgressProcRecord *ICMProgressProcRecordPtr;
  405.  
  406. #if defined(powerc) || defined (__powerc)
  407. #pragma options align=mac68k
  408. #endif
  409. struct ICMCompletionProcRecord {
  410.     ICMCompletionUPP            completionProc;
  411.     long                        completionRefCon;
  412. };
  413. #if defined(powerc) || defined(__powerc)
  414. #pragma options align=reset
  415. #endif
  416.  
  417. typedef struct ICMCompletionProcRecord ICMCompletionProcRecord;
  418.  
  419. typedef ICMCompletionProcRecord *ICMCompletionProcRecordPtr;
  420.  
  421. #if defined(powerc) || defined (__powerc)
  422. #pragma options align=mac68k
  423. #endif
  424. struct ICMDataProcRecord {
  425.     ICMDataUPP                    dataProc;
  426.     long                        dataRefCon;
  427. };
  428. #if defined(powerc) || defined(__powerc)
  429. #pragma options align=reset
  430. #endif
  431.  
  432. typedef struct ICMDataProcRecord ICMDataProcRecord;
  433.  
  434. typedef ICMDataProcRecord *ICMDataProcRecordPtr;
  435.  
  436. #if defined(powerc) || defined (__powerc)
  437. #pragma options align=mac68k
  438. #endif
  439. struct ICMFlushProcRecord {
  440.     ICMFlushUPP                    flushProc;
  441.     long                        flushRefCon;
  442. };
  443. #if defined(powerc) || defined(__powerc)
  444. #pragma options align=reset
  445. #endif
  446.  
  447. typedef struct ICMFlushProcRecord ICMFlushProcRecord;
  448.  
  449. typedef ICMFlushProcRecord *ICMFlushProcRecordPtr;
  450.  
  451. typedef pascal void (*ICMAlignmentProcPtr)(Rect *rp, long refcon);
  452.  
  453. enum {
  454.     uppICMAlignmentProcInfo = kPascalStackBased
  455.          | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Rect*)))
  456.          | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long)))
  457. };
  458.  
  459. #if USESROUTINEDESCRIPTORS
  460. typedef UniversalProcPtr ICMAlignmentUPP;
  461.  
  462. #define CallICMAlignmentProc(userRoutine, rp, refcon)        \
  463.         CallUniversalProc((UniversalProcPtr)(userRoutine), uppICMAlignmentProcInfo, (rp), (refcon))
  464. #define NewICMAlignmentProc(userRoutine)        \
  465.         (ICMAlignmentUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppICMAlignmentProcInfo, GetCurrentISA())
  466. #else
  467. typedef ICMAlignmentProcPtr ICMAlignmentUPP;
  468.  
  469. #define CallICMAlignmentProc(userRoutine, rp, refcon)        \
  470.         (*(userRoutine))((rp), (refcon))
  471. #define NewICMAlignmentProc(userRoutine)        \
  472.         (ICMAlignmentUPP)(userRoutine)
  473. #endif
  474.  
  475. #if defined(powerc) || defined (__powerc)
  476. #pragma options align=mac68k
  477. #endif
  478. struct ICMAlignmentProcRecord {
  479.     ICMAlignmentUPP                alignmentProc;
  480.     long                        alignmentRefCon;
  481. };
  482. #if defined(powerc) || defined(__powerc)
  483. #pragma options align=reset
  484. #endif
  485.  
  486. typedef struct ICMAlignmentProcRecord ICMAlignmentProcRecord;
  487.  
  488. typedef ICMAlignmentProcRecord *ICMAlignmentProcRecordPtr;
  489.  
  490. #if defined(powerc) || defined (__powerc)
  491. #pragma options align=mac68k
  492. #endif
  493. struct DataRateParams {
  494.     long                        dataRate;
  495.     long                        dataOverrun;
  496.     long                        frameDuration;
  497.     long                        keyFrameRate;
  498.     CodecQ                        minSpatialQuality;
  499.     CodecQ                        minTemporalQuality;
  500. };
  501. #if defined(powerc) || defined(__powerc)
  502. #pragma options align=reset
  503. #endif
  504.  
  505. typedef struct DataRateParams DataRateParams;
  506.  
  507. typedef DataRateParams *DataRateParamsPtr;
  508.  
  509. #if defined(powerc) || defined (__powerc)
  510. #pragma options align=mac68k
  511. #endif
  512. struct ImageDescription {
  513.     long                        idSize;
  514.     CodecType                    cType;
  515.     long                        resvd1;
  516.     short                        resvd2;
  517.     short                        dataRefIndex;
  518.     short                        version;
  519.     short                        revisionLevel;
  520.     long                        vendor;
  521.     CodecQ                        temporalQuality;
  522.     CodecQ                        spatialQuality;
  523.     short                        width;
  524.     short                        height;
  525.     Fixed                        hRes;
  526.     Fixed                        vRes;
  527.     long                        dataSize;
  528.     short                        frameCount;
  529.     Str31                        name;
  530.     short                        depth;
  531.     short                        clutID;
  532. };
  533. #if defined(powerc) || defined(__powerc)
  534. #pragma options align=reset
  535. #endif
  536.  
  537. typedef struct ImageDescription ImageDescription;
  538.  
  539. typedef ImageDescription *ImageDescriptionPtr;
  540.  
  541. typedef ImageDescription **ImageDescriptionHandle;
  542.  
  543. #if defined(powerc) || defined (__powerc)
  544. #pragma options align=mac68k
  545. #endif
  546. struct CodecInfo {
  547.     Str31                        typeName;
  548.     short                        version;
  549.     short                        revisionLevel;
  550.     long                        vendor;
  551.     long                        decompressFlags;
  552.     long                        compressFlags;
  553.     long                        formatFlags;
  554.     unsigned char                compressionAccuracy;
  555.     unsigned char                decompressionAccuracy;
  556.     unsigned short                compressionSpeed;
  557.     unsigned short                decompressionSpeed;
  558.     unsigned char                compressionLevel;
  559.     char                        resvd;
  560.     short                        minimumHeight;
  561.     short                        minimumWidth;
  562.     short                        decompressPipelineLatency;
  563.     short                        compressPipelineLatency;
  564.     long                        privateData;
  565. };
  566. #if defined(powerc) || defined(__powerc)
  567. #pragma options align=reset
  568. #endif
  569.  
  570. typedef struct CodecInfo CodecInfo;
  571.  
  572. #if defined(powerc) || defined (__powerc)
  573. #pragma options align=mac68k
  574. #endif
  575. struct CodecNameSpec {
  576.     CodecComponent                codec;
  577.     CodecType                    cType;
  578.     Str31                        typeName;
  579.     Handle                        name;
  580. };
  581. #if defined(powerc) || defined(__powerc)
  582. #pragma options align=reset
  583. #endif
  584.  
  585. typedef struct CodecNameSpec CodecNameSpec;
  586.  
  587. #if defined(powerc) || defined (__powerc)
  588. #pragma options align=mac68k
  589. #endif
  590. struct CodecNameSpecList {
  591.     short                        count;
  592.     CodecNameSpec                list[1];
  593. };
  594. #if defined(powerc) || defined(__powerc)
  595. #pragma options align=reset
  596. #endif
  597.  
  598. typedef struct CodecNameSpecList CodecNameSpecList;
  599.  
  600. typedef CodecNameSpecList *CodecNameSpecListPtr;
  601.  
  602. #define defaultDither 0
  603.  
  604. #define forceDither 1
  605.  
  606. #define suppressDither 2
  607.  
  608. #define useColorMatching 4
  609.  
  610. #if defined(powerc) || defined (__powerc)
  611. #pragma options align=mac68k
  612. #endif
  613. struct ICMFrameTimeRecord {
  614.     Int64Bit                    value;
  615.     long                        scale;
  616.     void                        *base;
  617.     long                        duration;
  618.     Fixed                        rate;
  619. };
  620. #if defined(powerc) || defined(__powerc)
  621. #pragma options align=reset
  622. #endif
  623.  
  624. typedef struct ICMFrameTimeRecord ICMFrameTimeRecord;
  625.  
  626. typedef ICMFrameTimeRecord *ICMFrameTimePtr;
  627.  
  628. #ifdef __cplusplus
  629. extern "C" {
  630. #endif
  631.  
  632. extern pascal OSErr CodecManagerVersion(long *version)
  633.  TWOWORDINLINE(0x7000, 0xAAA3);
  634. extern pascal OSErr GetCodecNameList(CodecNameSpecListPtr *list, short showAll)
  635.  TWOWORDINLINE(0x7001, 0xAAA3);
  636. extern pascal OSErr DisposeCodecNameList(CodecNameSpecListPtr list)
  637.  TWOWORDINLINE(0x700F, 0xAAA3);
  638. extern pascal OSErr GetCodecInfo(CodecInfo *info, CodecType cType, CodecComponent codec)
  639.  TWOWORDINLINE(0x7003, 0xAAA3);
  640. extern pascal OSErr GetMaxCompressionSize(PixMapHandle src, const Rect *srcRect, short colorDepth, CodecQ quality, CodecType cType, CompressorComponent codec, long *size)
  641.  TWOWORDINLINE(0x7004, 0xAAA3);
  642. extern pascal OSErr GetCompressionTime(PixMapHandle src, const Rect *srcRect, short colorDepth, CodecType cType, CompressorComponent codec, CodecQ *spatialQuality, CodecQ *temporalQuality, unsigned long *compressTime)
  643.  TWOWORDINLINE(0x7005, 0xAAA3);
  644. extern pascal OSErr CompressImage(PixMapHandle src, const Rect *srcRect, CodecQ quality, CodecType cType, ImageDescriptionHandle desc, Ptr data)
  645.  TWOWORDINLINE(0x7006, 0xAAA3);
  646. extern pascal OSErr FCompressImage(PixMapHandle src, const Rect *srcRect, short colorDepth, CodecQ quality, CodecType cType, CompressorComponent codec, CTabHandle clut, CodecFlags flags, long bufferSize, ICMFlushProcRecordPtr flushProc, ICMProgressProcRecordPtr progressProc, ImageDescriptionHandle desc, Ptr data)
  647.  TWOWORDINLINE(0x7007, 0xAAA3);
  648. extern pascal OSErr DecompressImage(Ptr data, ImageDescriptionHandle desc, PixMapHandle dst, const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle mask)
  649.  TWOWORDINLINE(0x7008, 0xAAA3);
  650. extern pascal OSErr FDecompressImage(Ptr data, ImageDescriptionHandle desc, PixMapHandle dst, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, PixMapHandle matte, const Rect *matteRect, CodecQ accuracy, DecompressorComponent codec, long bufferSize, ICMDataProcRecordPtr dataProc, ICMProgressProcRecordPtr progressProc)
  651.  TWOWORDINLINE(0x7009, 0xAAA3);
  652. extern pascal OSErr CompressSequenceBegin(ImageSequence *seqID, PixMapHandle src, PixMapHandle prev, const Rect *srcRect, const Rect *prevRect, short colorDepth, CodecType cType, CompressorComponent codec, CodecQ spatialQuality, CodecQ temporalQuality, long keyFrameRate, CTabHandle clut, CodecFlags flags, ImageDescriptionHandle desc)
  653.  TWOWORDINLINE(0x700A, 0xAAA3);
  654. extern pascal OSErr CompressSequenceFrame(ImageSequence seqID, PixMapHandle src, const Rect *srcRect, CodecFlags flags, Ptr data, long *dataSize, unsigned char *similarity, ICMCompletionProcRecordPtr asyncCompletionProc)
  655.  TWOWORDINLINE(0x700B, 0xAAA3);
  656. extern pascal OSErr DecompressSequenceBegin(ImageSequence *seqID, ImageDescriptionHandle desc, CGrafPtr port, GDHandle gdh, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, CodecFlags flags, CodecQ accuracy, DecompressorComponent codec)
  657.  TWOWORDINLINE(0x700D, 0xAAA3);
  658. extern pascal OSErr DecompressSequenceBeginS(ImageSequence *seqID, ImageDescriptionHandle desc, Ptr data, long dataSize, CGrafPtr port, GDHandle gdh, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, CodecFlags flags, CodecQ accuracy, DecompressorComponent codec)
  659.  FOURWORDINLINE(0x203C, 0x30, 0x5D, 0xAAA3);
  660. extern pascal OSErr DecompressSequenceFrame(ImageSequence seqID, Ptr data, CodecFlags inFlags, CodecFlags *outFlags, ICMCompletionProcRecordPtr asyncCompletionProc)
  661.  TWOWORDINLINE(0x700E, 0xAAA3);
  662. extern pascal OSErr DecompressSequenceFrameS(ImageSequence seqID, Ptr data, long dataSize, CodecFlags inFlags, CodecFlags *outFlags, ICMCompletionProcRecordPtr asyncCompletionProc)
  663.  FOURWORDINLINE(0x203C, 0x16, 0x47, 0xAAA3);
  664. extern pascal OSErr DecompressSequenceFrameWhen(ImageSequence seqID, Ptr data, long dataSize, CodecFlags inFlags, CodecFlags *outFlags, ICMCompletionProcRecordPtr asyncCompletionProc, const ICMFrameTimePtr frameTime)
  665.  FOURWORDINLINE(0x203C, 0x1A, 0x5E, 0xAAA3);
  666. extern pascal OSErr CDSequenceFlush(ImageSequence seqID)
  667.  FOURWORDINLINE(0x203C, 0x4, 0x5F, 0xAAA3);
  668. extern pascal OSErr SetDSequenceMatrix(ImageSequence seqID, MatrixRecordPtr matrix)
  669.  TWOWORDINLINE(0x7010, 0xAAA3);
  670. extern pascal OSErr SetDSequenceMatte(ImageSequence seqID, PixMapHandle matte, const Rect *matteRect)
  671.  TWOWORDINLINE(0x7011, 0xAAA3);
  672. extern pascal OSErr SetDSequenceMask(ImageSequence seqID, RgnHandle mask)
  673.  TWOWORDINLINE(0x7012, 0xAAA3);
  674. extern pascal OSErr SetDSequenceTransferMode(ImageSequence seqID, short mode, const RGBColor *opColor)
  675.  TWOWORDINLINE(0x7013, 0xAAA3);
  676. extern pascal OSErr SetDSequenceDataProc(ImageSequence seqID, ICMDataProcRecordPtr dataProc, long bufferSize)
  677.  TWOWORDINLINE(0x7014, 0xAAA3);
  678. extern pascal OSErr SetDSequenceAccuracy(ImageSequence seqID, CodecQ accuracy)
  679.  TWOWORDINLINE(0x7034, 0xAAA3);
  680. extern pascal OSErr SetDSequenceSrcRect(ImageSequence seqID, const Rect *srcRect)
  681.  TWOWORDINLINE(0x7035, 0xAAA3);
  682. extern pascal OSErr GetDSequenceImageBuffer(ImageSequence seqID, GWorldPtr *gworld)
  683.  TWOWORDINLINE(0x7015, 0xAAA3);
  684. extern pascal OSErr GetDSequenceScreenBuffer(ImageSequence seqID, GWorldPtr *gworld)
  685.  TWOWORDINLINE(0x7016, 0xAAA3);
  686. extern pascal OSErr SetCSequenceQuality(ImageSequence seqID, CodecQ spatialQuality, CodecQ temporalQuality)
  687.  TWOWORDINLINE(0x7017, 0xAAA3);
  688. extern pascal OSErr SetCSequencePrev(ImageSequence seqID, PixMapHandle prev, const Rect *prevRect)
  689.  TWOWORDINLINE(0x7018, 0xAAA3);
  690. extern pascal OSErr SetCSequenceFlushProc(ImageSequence seqID, ICMFlushProcRecordPtr flushProc, long bufferSize)
  691.  TWOWORDINLINE(0x7033, 0xAAA3);
  692. extern pascal OSErr SetCSequenceKeyFrameRate(ImageSequence seqID, long keyframerate)
  693.  TWOWORDINLINE(0x7036, 0xAAA3);
  694. extern pascal OSErr GetCSequenceKeyFrameRate(ImageSequence seqID, long *keyframerate)
  695.  FOURWORDINLINE(0x203C, 0x8, 0x4B, 0xAAA3);
  696. extern pascal OSErr GetCSequencePrevBuffer(ImageSequence seqID, GWorldPtr *gworld)
  697.  TWOWORDINLINE(0x7019, 0xAAA3);
  698. extern pascal OSErr CDSequenceBusy(ImageSequence seqID)
  699.  TWOWORDINLINE(0x701A, 0xAAA3);
  700. extern pascal OSErr CDSequenceEnd(ImageSequence seqID)
  701.  TWOWORDINLINE(0x701B, 0xAAA3);
  702. extern pascal OSErr GetCompressedImageSize(ImageDescriptionHandle desc, Ptr data, long bufferSize, ICMDataProcRecordPtr dataProc, long *dataSize)
  703.  TWOWORDINLINE(0x701C, 0xAAA3);
  704. extern pascal OSErr GetSimilarity(PixMapHandle src, const Rect *srcRect, ImageDescriptionHandle desc, Ptr data, Fixed *similarity)
  705.  TWOWORDINLINE(0x701D, 0xAAA3);
  706. extern pascal OSErr GetImageDescriptionCTable(ImageDescriptionHandle desc, CTabHandle *ctable)
  707.  TWOWORDINLINE(0x701E, 0xAAA3);
  708. extern pascal OSErr SetImageDescriptionCTable(ImageDescriptionHandle desc, CTabHandle ctable)
  709.  TWOWORDINLINE(0x701F, 0xAAA3);
  710. extern pascal OSErr GetImageDescriptionExtension(ImageDescriptionHandle desc, Handle *extension, long type, long index)
  711.  TWOWORDINLINE(0x7020, 0xAAA3);
  712. extern pascal OSErr SetImageDescriptionExtension(ImageDescriptionHandle desc, Handle extension, long type)
  713.  TWOWORDINLINE(0x7021, 0xAAA3);
  714. extern pascal OSErr RemoveImageDescriptionExtension(ImageDescription **desc, long type, long index)
  715.  FOURWORDINLINE(0x203C, 0xC, 0x3A, 0xAAA3);
  716. extern pascal OSErr CountImageDescriptionExtensionType(ImageDescription **desc, long type, long *count)
  717.  FOURWORDINLINE(0x203C, 0xC, 0x3B, 0xAAA3);
  718. extern pascal OSErr GetNextImageDescriptionExtensionType(ImageDescription **desc, long *type)
  719.  FOURWORDINLINE(0x203C, 0x8, 0x3C, 0xAAA3);
  720. extern pascal OSErr FindCodec(CodecType cType, CodecComponent specCodec, CompressorComponent *compressor, DecompressorComponent *decompressor)
  721.  TWOWORDINLINE(0x7023, 0xAAA3);
  722. extern pascal OSErr CompressPicture(PicHandle srcPicture, PicHandle dstPicture, CodecQ quality, CodecType cType)
  723.  TWOWORDINLINE(0x7024, 0xAAA3);
  724. extern pascal OSErr FCompressPicture(PicHandle srcPicture, PicHandle dstPicture, short colorDepth, CTabHandle clut, CodecQ quality, short doDither, short compressAgain, ICMProgressProcRecordPtr progressProc, CodecType cType, CompressorComponent codec)
  725.  TWOWORDINLINE(0x7025, 0xAAA3);
  726. extern pascal OSErr CompressPictureFile(short srcRefNum, short dstRefNum, CodecQ quality, CodecType cType)
  727.  TWOWORDINLINE(0x7026, 0xAAA3);
  728. extern pascal OSErr FCompressPictureFile(short srcRefNum, short dstRefNum, short colorDepth, CTabHandle clut, CodecQ quality, short doDither, short compressAgain, ICMProgressProcRecordPtr progressProc, CodecType cType, CompressorComponent codec)
  729.  TWOWORDINLINE(0x7027, 0xAAA3);
  730. extern pascal OSErr GetPictureFileHeader(short refNum, Rect *frame, OpenCPicParams *header)
  731.  TWOWORDINLINE(0x7028, 0xAAA3);
  732. extern pascal OSErr DrawPictureFile(short refNum, const Rect *frame, ICMProgressProcRecordPtr progressProc)
  733.  TWOWORDINLINE(0x7029, 0xAAA3);
  734. extern pascal OSErr DrawTrimmedPicture(PicHandle srcPicture, const Rect *frame, RgnHandle trimMask, short doDither, ICMProgressProcRecordPtr progressProc)
  735.  TWOWORDINLINE(0x702E, 0xAAA3);
  736. extern pascal OSErr DrawTrimmedPictureFile(short srcRefnum, const Rect *frame, RgnHandle trimMask, short doDither, ICMProgressProcRecordPtr progressProc)
  737.  TWOWORDINLINE(0x702F, 0xAAA3);
  738. extern pascal OSErr MakeThumbnailFromPicture(PicHandle picture, short colorDepth, PicHandle thumbnail, ICMProgressProcRecordPtr progressProc)
  739.  TWOWORDINLINE(0x702A, 0xAAA3);
  740. extern pascal OSErr MakeThumbnailFromPictureFile(short refNum, short colorDepth, PicHandle thumbnail, ICMProgressProcRecordPtr progressProc)
  741.  TWOWORDINLINE(0x702B, 0xAAA3);
  742. extern pascal OSErr MakeThumbnailFromPixMap(PixMapHandle src, const Rect *srcRect, short colorDepth, PicHandle thumbnail, ICMProgressProcRecordPtr progressProc)
  743.  TWOWORDINLINE(0x702C, 0xAAA3);
  744. extern pascal OSErr TrimImage(ImageDescriptionHandle desc, Ptr inData, long inBufferSize, ICMDataProcRecordPtr dataProc, Ptr outData, long outBufferSize, ICMFlushProcRecordPtr flushProc, Rect *trimRect, ICMProgressProcRecordPtr progressProc)
  745.  TWOWORDINLINE(0x702D, 0xAAA3);
  746. extern pascal OSErr ConvertImage(ImageDescriptionHandle srcDD, Ptr srcData, short colorDepth, CTabHandle clut, CodecQ accuracy, CodecQ quality, CodecType cType, CodecComponent codec, ImageDescriptionHandle dstDD, Ptr dstData)
  747.  TWOWORDINLINE(0x7030, 0xAAA3);
  748. extern pascal OSErr GetCompressedPixMapInfo(PixMapPtr pix, ImageDescriptionHandle *desc, Ptr *data, long *bufferSize, ICMDataProcRecord *dataProc, ICMProgressProcRecord *progressProc)
  749.  TWOWORDINLINE(0x7037, 0xAAA3);
  750. extern pascal OSErr SetCompressedPixMapInfo(PixMapPtr pix, ImageDescriptionHandle desc, Ptr data, long bufferSize, ICMDataProcRecordPtr dataProc, ICMProgressProcRecordPtr progressProc)
  751.  TWOWORDINLINE(0x7038, 0xAAA3);
  752. extern pascal void StdPix(PixMapPtr src, const Rect *srcRect, MatrixRecordPtr matrix, short mode, RgnHandle mask, PixMapPtr matte, const Rect *matteRect, short flags)
  753.  TWOWORDINLINE(0x700C, 0xAAA3);
  754. extern pascal OSErr TransformRgn(MatrixRecordPtr matrix, RgnHandle rgn)
  755.  TWOWORDINLINE(0x7039, 0xAAA3);
  756. extern pascal void SFGetFilePreview(Point where, ConstStr255Param prompt, FileFilterUPP fileFilter, short numTypes, SFTypeList typeList, DlgHookUPP dlgHook, SFReply *reply)
  757.  THREEWORDINLINE(0x303C, 0x41, 0xAAA3);
  758. extern pascal void SFPGetFilePreview(Point where, ConstStr255Param prompt, FileFilterUPP fileFilter, short numTypes, SFTypeList typeList, DlgHookUPP dlgHook, SFReply *reply, short dlgID, ModalFilterUPP filterProc)
  759.  THREEWORDINLINE(0x303C, 0x42, 0xAAA3);
  760. extern pascal void StandardGetFilePreview(FileFilterUPP fileFilter, short numTypes, SFTypeList typeList, StandardFileReply *reply)
  761.  THREEWORDINLINE(0x303C, 0x43, 0xAAA3);
  762. extern pascal void CustomGetFilePreview(FileFilterYDUPP fileFilter, short numTypes, SFTypeList typeList, StandardFileReply *reply, short dlgID, Point where, DlgHookYDUPP dlgHook, ModalFilterYDUPP filterProc, short *activeList, ActivateYDUPP activateProc, void *yourDataPtr)
  763.  THREEWORDINLINE(0x303C, 0x44, 0xAAA3);
  764. extern pascal OSErr MakeFilePreview(short resRefNum, ICMProgressProcRecordPtr progress)
  765.  THREEWORDINLINE(0x303C, 0x45, 0xAAA3);
  766. extern pascal OSErr AddFilePreview(short resRefNum, OSType previewType, Handle previewData)
  767.  THREEWORDINLINE(0x303C, 0x46, 0xAAA3);
  768. #ifdef __cplusplus
  769. }
  770. #endif
  771.  
  772. enum  {
  773.     sfpItemPreviewAreaUser        = 11,
  774.     sfpItemPreviewStaticText    = 12,
  775.     sfpItemPreviewDividerUser    = 13,
  776.     sfpItemCreatePreviewButton    = 14,
  777.     sfpItemShowPreviewButton    = 15
  778. };
  779.  
  780. #if defined(powerc) || defined (__powerc)
  781. #pragma options align=mac68k
  782. #endif
  783. struct PreviewResourceRecord {
  784.     unsigned long                modDate;
  785.     short                        version;
  786.     OSType                        resType;
  787.     short                        resID;
  788. };
  789. #if defined(powerc) || defined(__powerc)
  790. #pragma options align=reset
  791. #endif
  792.  
  793. typedef struct PreviewResourceRecord PreviewResourceRecord;
  794.  
  795. typedef PreviewResourceRecord *PreviewResourcePtr, **PreviewResource;
  796.  
  797. #ifdef __cplusplus
  798. extern "C" {
  799. #endif
  800.  
  801. extern pascal void AlignScreenRect(Rect *rp, ICMAlignmentProcRecordPtr alignmentProc)
  802.  FOURWORDINLINE(0x203C, 0x8, 0x4C, 0xAAA3);
  803. extern pascal void AlignWindow(WindowPtr wp, Boolean front, const Rect *alignmentRect, ICMAlignmentProcRecordPtr alignmentProc)
  804.  FOURWORDINLINE(0x203C, 0xE, 0x4D, 0xAAA3);
  805. extern pascal void DragAlignedWindow(WindowPtr wp, Point startPt, Rect *boundsRect, Rect *alignmentRect, ICMAlignmentProcRecordPtr alignmentProc)
  806.  FOURWORDINLINE(0x203C, 0x14, 0x4E, 0xAAA3);
  807. extern pascal long DragAlignedGrayRgn(RgnHandle theRgn, Point startPt, Rect *boundsRect, Rect *slopRect, short axis, UniversalProcPtr actionProc, Rect *alignmentRect, ICMAlignmentProcRecordPtr alignmentProc)
  808.  FOURWORDINLINE(0x203C, 0x1E, 0x4F, 0xAAA3);
  809. extern pascal OSErr SetCSequenceDataRateParams(ImageSequence seqID, DataRateParamsPtr params)
  810.  FOURWORDINLINE(0x203C, 0x8, 0x50, 0xAAA3);
  811. extern pascal OSErr SetCSequenceFrameNumber(ImageSequence seqID, long frameNumber)
  812.  FOURWORDINLINE(0x203C, 0x8, 0x51, 0xAAA3);
  813. extern pascal QDErr NewImageGWorld(GWorldPtr *gworld, ImageDescription **idh, GWorldFlags flags)
  814.  FOURWORDINLINE(0x203C, 0xC, 0x52, 0xAAA3);
  815. extern pascal OSErr GetCSequenceDataRateParams(ImageSequence seqID, DataRateParamsPtr params)
  816.  FOURWORDINLINE(0x203C, 0x8, 0x53, 0xAAA3);
  817. extern pascal OSErr GetCSequenceFrameNumber(ImageSequence seqID, long *frameNumber)
  818.  FOURWORDINLINE(0x203C, 0x8, 0x54, 0xAAA3);
  819. extern pascal OSErr GetBestDeviceRect(GDHandle *gdh, Rect *rp)
  820.  FOURWORDINLINE(0x203C, 0x8, 0x55, 0xAAA3);
  821. extern pascal OSErr SetSequenceProgressProc(ImageSequence seqID, ICMProgressProcRecord *progressProc)
  822.  FOURWORDINLINE(0x203C, 0x8, 0x56, 0xAAA3);
  823. extern pascal OSErr GDHasScale(GDHandle gdh, short depth, Fixed *scale)
  824.  FOURWORDINLINE(0x203C, 0xA, 0x5A, 0xAAA3);
  825. extern pascal OSErr GDGetScale(GDHandle gdh, Fixed *scale, short *flags)
  826.  FOURWORDINLINE(0x203C, 0xC, 0x5B, 0xAAA3);
  827. extern pascal OSErr GDSetScale(GDHandle gdh, Fixed scale, short flags)
  828.  FOURWORDINLINE(0x203C, 0xA, 0x5C, 0xAAA3);
  829. extern pascal OSErr ICMShieldSequenceCursor(ImageSequence seqID)
  830.  FOURWORDINLINE(0x203C, 0x4, 0x62, 0xAAA3);
  831. extern pascal void ICMDecompressComplete(ImageSequence seqID, OSErr err, short flag, ICMCompletionProcRecordPtr completionRtn)
  832.  FOURWORDINLINE(0x203C, 0xC, 0x63, 0xAAA3);
  833. #ifdef __cplusplus
  834. }
  835. #endif
  836.  
  837. enum  {
  838.     identityMatrixType            = 0x00,
  839.     translateMatrixType            = 0x01,
  840.     scaleMatrixType                = 0x02,
  841.     scaleTranslateMatrixType    = 0x03,
  842.     linearMatrixType            = 0x04,
  843.     linearTranslateMatrixType    = 0x05,
  844.     perspectiveMatrixType        = 0x06
  845. };
  846.  
  847. typedef unsigned short MatrixFlags;
  848.  
  849. #ifdef __cplusplus
  850. extern "C" {
  851. #endif
  852.  
  853. extern pascal short GetMatrixType(MatrixRecord *m)
  854.  TWOWORDINLINE(0x7014, 0xABC2);
  855. extern pascal void CopyMatrix(MatrixRecord *m1, MatrixRecord *m2)
  856.  TWOWORDINLINE(0x7020, 0xABC2);
  857. extern pascal Boolean EqualMatrix(const MatrixRecord *m1, const MatrixRecord *m2)
  858.  TWOWORDINLINE(0x7021, 0xABC2);
  859. extern pascal void SetIdentityMatrix(MatrixRecord *matrix)
  860.  TWOWORDINLINE(0x7015, 0xABC2);
  861. extern pascal void TranslateMatrix(MatrixRecord *m, Fixed deltaH, Fixed deltaV)
  862.  TWOWORDINLINE(0x7019, 0xABC2);
  863. extern pascal void RotateMatrix(MatrixRecord *m, Fixed degrees, Fixed aboutX, Fixed aboutY)
  864.  TWOWORDINLINE(0x7016, 0xABC2);
  865. extern pascal void ScaleMatrix(MatrixRecord *m, Fixed scaleX, Fixed scaleY, Fixed aboutX, Fixed aboutY)
  866.  TWOWORDINLINE(0x7017, 0xABC2);
  867. extern pascal void SkewMatrix(MatrixRecord *m, Fixed skewX, Fixed skewY, Fixed aboutX, Fixed aboutY)
  868.  TWOWORDINLINE(0x7018, 0xABC2);
  869. extern pascal OSErr TransformFixedPoints(const MatrixRecord *m, FixedPoint *fpt, long count)
  870.  TWOWORDINLINE(0x7022, 0xABC2);
  871. extern pascal OSErr TransformPoints(const MatrixRecord *mp, Point *pt1, long count)
  872.  TWOWORDINLINE(0x7023, 0xABC2);
  873. extern pascal Boolean TransformFixedRect(const MatrixRecord *m, FixedRect *fr, FixedPoint *fpp)
  874.  TWOWORDINLINE(0x7024, 0xABC2);
  875. extern pascal Boolean TransformRect(const MatrixRecord *m, Rect *r, FixedPoint *fpp)
  876.  TWOWORDINLINE(0x7025, 0xABC2);
  877. extern pascal Boolean InverseMatrix(MatrixRecord *m, MatrixRecord *im)
  878.  TWOWORDINLINE(0x701C, 0xABC2);
  879. extern pascal void ConcatMatrix(MatrixRecord *a, MatrixRecord *b)
  880.  TWOWORDINLINE(0x701B, 0xABC2);
  881. extern pascal void RectMatrix(const MatrixRecord *matrix, Rect *srcRect, Rect *dstRect)
  882.  TWOWORDINLINE(0x701E, 0xABC2);
  883. extern pascal void MapMatrix(const MatrixRecord *matrix, Rect *fromRect, Rect *toRect)
  884.  TWOWORDINLINE(0x701D, 0xABC2);
  885. #ifdef __cplusplus
  886. }
  887. #endif
  888.  
  889. #endif
  890.  
  891.